﻿#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//左移

//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int a = n << 1;
//	printf("%d", a);
//	return 0;
//}



//右移


//int main()
//{
//	int n = 0;
//	scanf("%d",&n);
//	int a = n >> 1;
//	printf("%d",a);
//	return 0;
//}


//int main()
//{
//	/*int a = -3;
//	a >>= 1;*/
//	int a = 6;
//	a <<= 1;
//	printf("%d\n",a);
//	return 0;
//}


//按位与

//int main()
//{
//	int a = 3;
//	int b = -5;
//	int c = a & b;
//	printf("%d\n", c);
//	return 0;
//}

//按位或

//int main()
//{
//	int a = 3;
//	int b = -5;
//	int c = a | b;
//	printf("%d\n", c);
//	return 0;
//}

//按位异或

//int main()
//{
//	int a = 5;
//	int b = -3;
//	int c =a ^ b;
//	printf("%d\n", c);
//	return 0;
//}


//按位取反

//int main()
//{
//	int a = 0;
//	int b = ~a;
//	printf("%d",b);
//	return 0;
//}

//不能创建临时变量（第三个变量），实现两个整数的交换
//int main()
//{
//	int a = 3;
//	int b = 5;
//	//如果a和b都很大，但是没有超出整形的范围，那么a+b可能会超出整形的范围，所以不适用
//	a = a + b;
//	b = a - b;
//	a = a - b;
//	printf("%d %d",a,b);
//	return 0;
//}


//int main()
//{
//	int a = 3;
//	int b = 5;
//	a = a ^ b;
//	b = a ^ b;//等价于把上面的那个式子a = a ^ b带入该式子中得：b = a^b^b=a^0;
//	a = a ^ b;//同上
//	printf("%d %d", a, b);
//	return 0;
//}


//编写代码实现：求一个整数存储在内存中的二进制中1的个数
//方法一

//int main()
//{
//	unsigned int n = 0;
//	int count = 0;
//	scanf("%d", &n);
//	while (n)
//	{
//		if (n % 2 == 1)
//		{
//			count++;
//		}
//		n /= 2;
//	}
//	printf("%d", count);
//	return 0;
//}


//方法二

//int main()
//{
//	int n = 0;
//	scanf("%d",&n);
//	int count = 0;
//	for (int i = 0;i<32;i++)
//	{
//		if ((n>>i)&1 == 1)
//		{
//			count++;
//		}
//	}
//	printf("%d",count);
//	return;
//}


//方法三

//int main()
//{
//	int n = 0;
//	scanf("%d",&n);
//	int count = 0;
//	while (n)
//	{
//		n = n & (n - 1);
//		count++;
//	}
//	printf("%d",count);
//	return 0;
//}


//练习2：二进制位置0或置1
//编写代码将13二进制序列的第5位修改为1，然后在改为0

//int main()
//{
//	int n = 13;
//	n = n | (1 << 4);//把第五位改为1
//	printf("%d\n",n);
//	n = n & (~(1 << 4));
//	printf("%d\n",n);//把第五位改为0
//	return 0;
//}


//int main()
//{
//	int a = 1;
//	int b = 2;
//	int c = (a > b, a = b + 10, a, b = a + 1);//结果是13
//	//从左向右依次执⾏,整个表达式的结果是最后⼀个表达式的结果
//	printf("%d",c);
//	return 0;
//}


//int main()
//{
//	int a = 0, b = 0, c = 0, d = 0;
//	if (a = b + 1, c = a / 2, d > 0)
//	{
//
//	}
//	return 0;
//}


//int Add(int x, int y)
//{
//	return x + y;
//}
//
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d",&a,&b);
//	printf("hehe\n");
//	//上面这两个函数后面的（）都是函数调用操作符
//
//	//也可以自定义函数
//	//比如：
//	int c = Add(a, b);//（）也是函数调用操作符
//	printf("%d",c);
//	return 0;
//}